package com.sikaryofficial.backend.domain.dto.req.music;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sikaryofficial.backend.domain.dto.resp.music.MusicGenreVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;

/**
 * 音乐库保存对象
 *
 * @author qinjinyuan
 * @date 2024-08-07
 */
@Getter
@Setter
@ToString
@ApiModel(value = "音乐库保存对象", description = "音乐库保存对象")
public class MusicLibraryReq {
    /**
     * 音乐ID
     */
    @ApiModelProperty(value = "音乐ID")
    private Long musicId;

    /**
     * 作者
     */
    @ApiModelProperty(value = "作者")
    @Length(max = 50,message = "作者不能超过200个字符")
    private String artist;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Length(max = 200,message = "描述不能超过200个字符")
    private String description;

    /**
     * 链接
     */
    @ApiModelProperty(value = "链接")
    private String link;

    /** 本地链接 */
    @ApiModelProperty(value = "本地链接")
    @Length(max = 50,message = "本地链接不能超过200个字符")
    private String localLink;
    /**
     * 本地原始格式链接
     */
    @ApiModelProperty(value = "本地原始格式链接")
    private String localOriginalLink;
    /**
     * 封面
     */
    @ApiModelProperty(value = "封面")
    private String coverImage;
    /**
     * 歌名
     */
    @ApiModelProperty(value = "歌名")
    @Length(max = 50,message = "歌名不能超过200个字符")
    private String title;

    /** 音乐时长，单位秒 */
    @ApiModelProperty(value = "播放时长")
    private BigDecimal duration;

    /** 文件大小，单位M */
    @ApiModelProperty(value = "件大小，单位M")
    private BigDecimal fileSize;

    /** 节奏 */
    @ApiModelProperty(value = "节奏")
    private String tempo;

    @JsonIgnore
    private Integer source;

    /**
     * 音乐分类列表
     */
    @ApiModelProperty(value = "音乐分类列表")
    @Valid
    private List<MusicGenreVO> musicGenreList;
}
